Title:   Materials to reproduce analysis reported in: Informing the Public: How Party Communication Builds Opportunity Structures 
Authors: Sebastian A. Popa, Zoltan Fazekas, Daniela Braun, Melanie-Marita Leidecker-Sandmann
Date:    August 2019
Journal: Political Communication
---

Brief introduction:

Here you can find data and script to produce the analysis in the main text of "Informing the Public: How Party Communication Builds Opportunity Structures" and most parts of the Supplementary Material. The individual voter data comes from the 2014 EES study. The original and full 2014 European Election Study voter and Euromanifesto files are both available on the GESIS archive, or also described in detail at: http://europeanelectionstudies.net. 

Raw Twitter and Press Release data cannot be shared publicly. The data file is supplied for the sole purposes of reproducing the materials in the paper. Please get in touch with the authors regarding data use for different purposes and original files, we are happy to help. For additional information regarding the press release data, please see also Adam, S., Antl-Wittenberg, E.-M., Eugster, B., Leidecker-Sandmann, M., Maier, M., & Schmidt, F. (2017). Strategies of pro-European parties in the face of a Eurosceptic challenge. European Union Politics, 18(2), 260–282. https://doi.org/10.1177/1465116516661248.

---
Contents:

1.  Data

ees-sptizen.csv (in .tab for Dataverse, automatic conversion)

	* .csv file containing individual level voter data (EES 2014). Contains all countries (Malta excluded from analysis, see main text for reasoning) with individual level covariates and merged party and country level characteristics. These are described in the "Variables" section at the end of this document and in the paper SI.

party-spitzen.csv (in .tab for Dataverse, automatic conversion)

	* .csv file containing party specific variables. These are identical to the party level covariates included in the individual level data. One party appears once though.


2. Code

ees-spitzen.R

	* .R script to produce all tables and figures in the main text, robustness checks and supplementary materials (without Twitter search validation including text, parts of Appendix 2). Minor table formatting has been carried out manually in the document. Full run of the script assumes current location (working directory) to be that of the script's. For direct reproduction of the results, please also consult the sessionInfo.txt, for package versions (no archived packages supplied with the reproduction file).

3. Additional

sessionInfo.txt

	* R session info for the execution that generated the results in the main text.

Note:

../paper-tables/ and ../paper-figures/

	* For table and figure export (if script is run and exports are uncommented), these folder are ncessary.

Assumed directory structure is:

data/
	..ees-spitzen.csv
	..parties-spitzen.csv
paper-figures/
paper-tables/
R/
	..ees-spitzen.R

---
Variables in ees-spitzen.csv:

"respid"        = respondent unique id.
"party_id"      = party id code, with non-identifiers in each country marked (based on party support).
"party_id_code" = party id with code, where 0 is non-identifier (no country specific marking).
"countrycode"   = country name.
"rec_count"     = count of recognized candidates [0, 1, 2, or 3]
"pot_correct"   = total number of candidates asked (constant, for binomial model = 3).
"female"        = sex, where 1 = female, 0 = male.
"secondary"     = completed secondary education = 1, 0 otherwise.
"tertiary"      = completed tertiary education = 1, 0 otherwise.
"euknow"        = EU knowledge score, 0 = 0 correct, 0.5 = one correct, 1 = two correct.
"eu_correct"    = total number EU knowledge questions (constant, for binomial model = 3).
"intpol"        = interest in politics, recoded to range from 0 (not at all) to 1 (very interested).
"exposure"      = campaign exposure, 1 = remembers EP campaign.
"discuss"       = political discussion, ranges from 0 to 1, within-individual average of three discussion variables.
				higher values, more frequent political discussion
"meannews"      = news consumption, scaled to range from 0 = never to 1 = every day/almost every day.
"proEU"         = respondent's EU position, scaled to range from 
					0 = European unification has already gone too far 
					to 1 =  European unification should be pushed further
"age"           = respondent's age.

// group-mean centered versions of predictors, where the grouping is party the respondent supports.

"age_pc" = age, group-mean centered and divided by 2 standard deviations.
"euk_pc" = EU knowledge, group-mean centered and divided by 2 sd.
"int_pc" = interest in politics,  group-mean centered and divided by 2 sd.
"dis_pc" = discussion,  group-mean centered and divided by 2 sd.
"eu_pc"  = EU attitude group-mean centered and divided by 2 sd.
"new_pc" = news consumption group-mean centered and divided by 2 sd.

[country level level] = constant within each country.

"home_lang" = is it a country where the candidate comes from/shares language.
"visit_any" = any of the lead candidates visited country (= 1).

[party level] = constant within each party.

"p_spitz"         = coded 1 for the national parties that supported any of the lead candidates in the runoff for the 2014 EP elections and 0 otherwise.
"pname_twitter"   = party name in Twitter data.
"pname_manifesto" = party name in Manifest data.
"pname_press"     = party name in press release data. Variables used for cross-checking (different language/style).
"avail_twitter"   = is it available in Twitter data (= 1).
"avail_manifesto" = is it available in manifesto data (= 1).
"avail_press" 	  = is it available in press release data (= 1).
"cands" 		  = number of candidates on Twitter.
"tweets" 		  = number of tweets.
"cands_mention"   = number of candidates that mention at least once Spitzenkandidaten (incl. system).
"reach_spitzen"   = summed follower count reached by Spitzen mentions.
"spitzen_tw_logratio"    = logged reach_spitzen (added + 1 to adjust for the 0 reach cases) over summed follower count reached by all tweets (also logged).
"spitzen_tw_logratio_sd" = mean centered and 2 sd divided version of spitzen_tw_logratio.
"spitzen_mention"        = party total of press releases with at least one Spitzen mention.
"spitzen_mention_jw"     = party total of press releases with at least one Spitzen mention where the search is not exact,
						   but uses the Jaro-Winkler distance, as described in text.
"spitzen_press_rel"      = spitzen_menion over number of press releases.
"spitzen_press_rel_jw"   = spitzen_mention_jw over number of press releases.
"spitzen_press_01"       = spitzen_mention recoded to be 1 if there is any mention.
"spitzen_press_jw_01" = spitzen_mention_jw recoded to be 1 if there is any mention.
"spitzen_man"         = Spitzen salience in manifestos.
"spitzen_man_01"      = Spitzen salience in manifestos, 1 if not 0 percentage.
"n_releases"          = number of press releases.
"votes_received"      = number of votes the party received in the 2014 EP elections.
"twitter_vote"        = logged reach_spitzen (added + 1 to adjust for the 0 reach cases) 
						over logged votes received (added + 1 to adjust for the 0 reach cases).
"spitzen_tw_cands"    = proportion of candidates from total candidates (of party) mentioning (centered and divided by 2 sd).
"spitzen_tw_tweets"   = proportion of tweets from total tweets (of party) mentioning (centered and divided by 2 sd).

Variables in party-spitzen.csv:

- contains variables at the party level, for easier merging and additional tests. Description is above, with two additional variables.

"ees" 	  = party code for merging, if needed, based on the EES data.
"country" = country name.